package jishiti.counttxtfile;

import java.util.*;

/**
 * 随机输入一个字符串，计算出字符串中每个字符的数量，并按照字符数量从大到小
 * 输出字符和对应数量
 */
public class CharacterCount {
    public static void main(String[] args) {
        System.out.println("输入一个字符串");
        String str = new Scanner(System.in).nextLine();
//        将字符串转成字符数组
        char[] chs = str.toCharArray();
//        将每个字符出现的次数保存到map集合中
        Map<Character,Integer> map = new HashMap<>();
        for(char c :chs){
//            判断字符是否存在于map中
            if(!map.containsKey(c)){
                map.put(c,1);
            }else {
                map.put(c,map.get(c)+1);
            }
        }
//        将map中的键值对数据存储到list集合，进行自定义排序
        List<Map.Entry<Character,Integer>> list = new ArrayList<>(map.entrySet());
        Collections.sort(list, (o1, o2) -> o2.getValue()-o1.getValue());
        list.forEach(System.out::println);
    }
}
